/**
 * API 路由聚合文件
 * 集中管理所有 API 路由，支持版本控制
 */

const express = require("express");
const router = express.Router();

// 导入各模块路由
const usersRouter = require("./users");
// 未来可以添加更多模块路由
// const productsRouter = require('./products');
const ordersRouter = require("./orders");
const orderItemsRouter = require("./orderItems");

// API 版本中间件
const versionMiddleware = (req, res, next) => {
  // 从请求头或查询参数中提取版本信息
  const version = req.headers["api-version"] || req.query.apiVersion || "v1";

  // 将版本信息附加到请求对象
  req.apiVersion = version;
  next();
};

// 应用版本中间件到所有 API 路由
router.use(versionMiddleware);

/**
 * API 健康检查端点
 * 用于监控 API 服务状态
 */
router.get("/health", (req, res) => {
  res.status(200).json({
    code: 200,
    message: "API 服务运行正常",
    timestamp: new Date().toISOString(),
    version: req.apiVersion,
  });
});

/**
 * API 信息端点
 * 提供 API 基本信息和可用端点
 */
router.get("/info", (req, res) => {
  const baseUrl = `${req.protocol}://${req.get("host")}${req.baseUrl}`;

  res.json({
    code: 200,
    message: "API 信息",
    data: {
      name: "Express API",
      description: "RESTful API 服务",
      version: req.apiVersion,
      baseUrl: baseUrl,
      endpoints: [
        {
          path: "/api/health",
          method: "GET",
          description: "服务健康检查",
        },
        {
          path: "/api/info",
          method: "GET",
          description: "API 信息",
        },
        {
          path: "/api/users",
          methods: ["GET", "POST"],
          description: "用户管理",
        },
        {
          path: "/api/users/:id",
          methods: ["GET", "PUT", "DELETE"],
          description: "特定用户操作",
        },
        // 未来可以添加更多端点信息
      ],
    },
  });
});

// 挂载用户路由
router.use("/users", usersRouter);

// 未来可以挂载其他模块路由
// router.use('/products', productsRouter);
router.use("/orders", ordersRouter);
router.use("/order_items", orderItemsRouter);

// API 版本控制示例（可根据需要实现）
// router.use('/v1/users', usersRouterV1);
// router.use('/v2/users', usersRouterV2);

module.exports = router;
